790 REM *** CLEAR SCREEN AND SET TOP MARGIN TO 16 ***
800 HOME : POKE 34,16
810 VTAB 12: HTAB 13: PRINT "PLEASE STAND-BY"
820 PRINT : HTAB 4: PRINT "WHILE I TRY TO INSERT THESE WORDS"
830 PRINT : HTAB 12: PRINT "MATRIX SIZE "C" X "R
840 PRINT : HTAB 16: PRINT K SPC( 2)W$(K)
850 GOTO 1340
860 K = K +1
870 IF K < = N THEN 800
880 REM *** TURN ON PRINTER ***
890 TEXT : HOME : VTAB 12: PRINT "WHAT PRINTER ARE YOU USING:": PRINT : PRINT : PRINT "1. IMAGEWRITER/PROWRITER": PRINT "2. EPSON": PRINT : GET PZ$: PRINT
900 IF PZ$ < >"1" AND PZ$ < >"2" THEN GOTO 890
910 POKE 34,0: HOME : VTAB 12: PRINT TAB( 13)"TURN ON PRINTER": PRINT D$;"PR#1": PRINT CHR$(9) +"80N"
920 REM ****TURN ON EMPHASIZE MODE ****
930 IF PZ$ = "1" THEN PRINT CHR$(27)"!": HOME : GOSUB 1250
940 IF PZ$ = "2" THEN PRINT CHR$(27)"E": HOME : GOSUB 1250
950 GOSUB 2080
960 PRINT
970 PRINT
980 FOR J = 1 TO R
990 FOR I = 1 TO C
1000 PRINT LL$(I,J)" ";
1010 NEXT I
1020 PRINT
1030 NEXT J
1040 REM **** TURN OFF EMPHASIZED MODE ****
1050 IF PZ$ = "1" THEN PRINT CHR$(27); CHR$(34): PRINT CHR$(12): REM FORM FEED
1060 IF PZ$ = "2" THEN PRINT CHR$(27)"F": PRINT CHR$(12): REM FORM FEED
1070 REM **** TURN OFF PRINTER ****
1080 PRINT : PRINT : PRINT D$;"PR#0"
1090 HOME : IF SE$ = "P" THEN 1200
1100 VTAB 12: INPUT "WOULD YOU LIKE TO SAVE THIS PUZZLE?(Y/N)";SE$
1110 IF SE$ = "N" THEN 1190
1120 IF SE$ < >"Y" THEN 1100
1130 HOME : VTAB 12
1140 EF = 2: PRINT : PRINT "ENTER NAME OF PUZZLE --- OR ---": PRINT "'?' FOR CATALOG ";: INPUT "";DS$: IF DS$ = CHR$(13) THEN 1130
1150 IF DS$ = CHR$(63) THEN PRINT D$ LEFT$("CATALOG",7 -4 *( PEEK(48896) = 76)): PRINT : GOTO 1140
1160 NF = 1: IF LEN(DS$) >0 THEN FOR NC = 1 TO LEN(DS$):NA = ASC( MID$ (DS$,NC,1)):NF = ((NA >64 AND NA <91) OR (NA = 46) OR (NA >47 AND NA <58 AND NC >1)) AND NF = 1: NEXT
1170 IF LEN(DS$) >15 OR NF = 0 THEN PRINT CHR$(7): PRINT "INVALID NAME! PRESS RETURN TO CONTINUE ";: GET DS$: PRINT : GOTO 1130
1180 GOTO 2770
1190 HOME
1200 VTAB 12: INPUT "WOULD YOU LIKE TO CREATE ANOTHER PUZZLE? (Y/N) ";SE$
1210 IF SE$ = "Y" THEN RUN
1220 IF SE$ < >"N" THEN 1200
1230 HOME : VTAB 12: HTAB 17: PRINT "GOOD BYE!";: POKE 216,0: END
1240 REM ****** PUZZLE PRINT ROUTINE ******
1250 FOR J = 1 TO R
1260 FOR I = 1 TO C
1270 PRINT L$(I,J)" ";
1280 LL$(I,J) = L$(I,J)
1290 NEXT I
1300 PRINT
1310 NEXT J
1320 IF FF = 1 THEN PRINT CHR$(12);: REM *** FORM FEED ***
1330 RETURN
1340 REM ****** WORD BREAKDOWN ROUTINE ******
1350 L0 = LEN(W$(K))
1360 REM ****** RANDOM SELECTION OF DIRECTION ******
1370 IF T <100 THEN 1390
1380 GOSUB 2330: GOTO 720: REM *** WORD WILL NOT FIT--EXPAND MATRIX AND START OVER ***
1390 T = T +1:P = 1
1400 P0 = 1
1410 Q = -1
1420 IF RND(1) < = .5 THEN 1440
1430 Q = 1
1440 Q0 = -1
1450 IF RND(1) < = .5 THEN 1470
1460 Q0 = 1
1470 D = 2
1480 IF Q < >1 THEN 1500
1490 P = 0
1500 IF Q0 < >1 THEN 1520
1510 P0 = 0
1520 IF RND(1) <.75 THEN 1540
1530 D = 1
1540 IF RND(1) >.25 THEN 1560
1550 D = 0
1560 REM ****** RANDOM SELECTION OF START POINT ******
1570 C0 = C
1580 R0 = R
1590 IF D < >1 THEN 1610
1600 R0 = R -L0
1610 IF D < >0 THEN 1630
1620 C0 = C -L0
1630 IF D < = 1 THEN 1660
1640 R0 = R -L0
1650 C0 = C -L0
1660 IF C0 < >C THEN 1680
1670 P0 = 0
1680 IF R0 < >R THEN 1700
1690 P = 0
1700 Z1 = ( RND(1) *R0/100 +.01) *100 +P *L0
1710 Z2 = ( RND(1) *C0/100 +.01) *100 +P0 *L0
1720 X1 = ABS( INT(Z1))
1730 X2 = ABS( INT(Z2))
1740 REM ****** ENTRY OF WORD IN THE PUZZLE ******
1750 IF D = 1 THEN 1970
1760 IF D = 0 THEN 1870
1770 FOR I = 1 TO L0
1780 IF L$(X2 +(I -1) *Q0,X1 +(I -1) *Q) = "." THEN 1800
1790 IF L$(X2 +(I -1) *Q0,X1 +(I -1) *Q) < > MID$ (W$(K),I,1) THEN 1360
1800 NEXT I
1810 T = 0
1820 FOR I = 1 TO L0 -1
1830 L$(X2 +I *Q0,X1 +I *Q) = MID$ (W$(K),I +1,1)
1840 NEXT I
1850 L$(X2,X1) = MID$ (W$(K),1,1)
1860 GOTO 2060
1870 FOR I = 1 TO L0
1880 IF L$(X2 +(I -1) *Q0,X1) = "." THEN 1900
1890 IF L$(X2 +(I -1) *Q0,X1) < > MID$ (W$(K),I,1) THEN 1360
1900 NEXT I
1910 T = 0
1920 FOR I = 1 TO L0 -1
1930 L$(X2 +I *Q0,X1) = MID$ (W$(K),I +1,1)
1940 NEXT I
1950 L$(X2,X1) = MID$ (W$(K),1,1)
1960 GOTO 2060
1970 FOR I = 1 TO L0
1980 IF L$(X2,X1 +(I -1) *Q) = "." THEN 2000
1990 IF L$(X2,X1 +(I -1) *Q) < > MID$ (W$(K),I,1) THEN 1360
2000 NEXT I
2010 T = 0
2020 FOR I = 1 TO L0 -1
2030 L$(X2,X1 +I *Q) = MID$ (W$(K),I +1,1)
2040 NEXT I
2050 L$(X2,X1) = MID$ (W$(K),1,1)
2060 GOTO 860
2070 REM ****** FILL OF REMAINING POSITIONS ******
2080 FOR I = 1 TO C
2090 FOR J = 1 TO R
2100 IF LL$(I,J) > <"." THEN 2130: REM *** IF PERIOD IS FOUND, REPLACE WITH RANDOM LETTER ***
2110 Z1 = INT(26 * RND(1)) +1
2120 LL$(I,J) = A$(Z1)
2130 NEXT J
2140 NEXT I
2150 REM *** CENTER TITLE ON PAGE AND PRINT IN EXPANDED MODE ***
2400 PRINT TAB( 4)"WORD FIND IS AN ADAPTION OF A": PRINT "PROGRAM CALLED ";: PRINT CHR$(34);: PRINT "WORD GAME";: PRINT CHR$(34);: PRINT " THAT APPEARED";: PRINT "IN THE BOOK ";: PRINT CHR$(34);: PRINT "BASIC COMPUTER PROGRAMS FOR";
2410 PRINT "THE HOME";: PRINT CHR$(34);: PRINT " BY CHARLES D. STERNBERG.": PRINT "IMPROVEMENTS HAVE BEEN MADE IN THE": PRINT "ORIGINAL PROGRAM TO MAKE IT MORE USEFUL": PRINT "AND EASIER TO USE.": PRINT
2420 PRINT TAB( 4)"ONE OF THE IMPROVEMENTS CAUSES THE": PRINT "COMPUTER TO AUTOMATICALLY ENLARGE THE": PRINT "SIZE OF THE MATRIX, TO ACCOMMODATE THE": PRINT "NUMBER AND THE SIZE OF THE WORDS TO BE": PRINT "HIDDEN.": PRINT
2430 PRINT TAB( 4)"START WITH A MATRIX SIZE THAT IS": PRINT "SLIGHTLY TOO SMALL FOR THE NUMBER OF": PRINT "WORDS CHOSEN. FOR EXAMPLE, YOU WANT TO": PRINT "USE FIFTEEN (15) WORDS. START OUT WITH": PRINT "TEN (10) COLUMNS AND TEN (10) ROWS. THE
2440 PRINT "PROGRAM WILL AUTOMATICALLY EXPAND THE": PRINT "ROWS AND COLUMNS UNTIL THE WORDS FIT."
2450 PRINT : PRINT TAB( 7)"PRESS RETURN TO CONTINUE ";
2460 GET SE$
2470 HOME : VTAB 1
2480 PRINT TAB( 4)"ONCE A PUZZLE HAS BEEN CREATED IT CAN";: PRINT "BE SAVED ON DISK FOR LATER USE.": PRINT
2490 PRINT TAB( 4)"YOU HAVE THE CHOICE OF CREATING": PRINT "EITHER ONE OF TWO PUZZLES. THE FIRST": PRINT "PUZZLE WILL PRINT A LIST OF THE WORDS": PRINT "THAT ARE TO BE LOCATED IN THE PUZZLE.": PRINT "THE SECOND PUZZLE WILL PRINT ONLY A LIST";
2500 PRINT "OF THE CLUES FOR EACH HIDDEN WORD."
2510 PRINT : PRINT TAB( 4)"(EXAMPLE) THE HIDDEN WORD IS FIG, THE";: PRINT "CLUE COULD BE----";: PRINT "ADAMS FIRST CLOTHES.": PRINT "(GEN. 3:7)"
2520 VTAB 16: INPUT "WOULD YOU LIKE TO USE CLUES? (Y/N) ";SE$
2530 IF LEFT$(SE$,1) = "N" THEN CL = 0:CC = 0: GOTO 2560
2540 IF LEFT$(SE$,1) < >"Y" THEN 2520
2550 CL = 1:CC = 1
2560 VTAB 18: PRINT "WOULD YOU LIKE THE SOLUTION TO BE ": INPUT "PRINTED ON A SEPARATE SHEET? (Y/N) ";SE$
2570 IF LEFT$(SE$,1) = "Y" THEN FF = 1: GOTO 2600
2580 IF LEFT$(SE$,1) < >"N" THEN 2560
2590 FF = 0
2600 VTAB 21: CALL -958: INPUT "WOULD YOU LIKE TO CREATE A NEW PUZZLE ORUSE A PREVIOUS ONE? (N/P) ";SE$
2610 IF SE$ = "N" THEN 2660
2620 IF SE$ < >"P" THEN 2600
2630 EF = 1: PRINT : PRINT "ENTER NAME OF PUZZLE --- OR ---": PRINT "'?' FOR CATALOG ";: INPUT "";DS$: IF DS$ = "" THEN 2600
2640 IF DS$ = CHR$(63) THEN PRINT D$ LEFT$("CATALOG",7 -4 *( PEEK(48896) = 76)): GOTO 2630
2650 GOSUB 3030
2660 RETURN
2670 REM
2680 REM *** THE FOLLOWING ROUTINE CONCATENATES A QUOTATION MARK ONTO CL$ ALLOWING COMMAS AND COLONS TO BE USED IN YOUR CLUES ***
2690 REM *** INPUT ANYTHING ROUTINE ***
2700 REM
2710 REM
2720 GET C$: PRINT C$;: IF C$ = CHR$(13) THEN RETURN
2730 IF C$ = CHR$(8) THEN CL$ = LEFT$(CL$, LEN(CL$) -1): GOTO 2720